/*
 * IFacadeProdotti
 * 
 * The IFacadeProdotti interface provides methods to search for a product or a list of products,
 * to insert, modify and delete a product.
 * It also provides methods to manage the notifications and to search for duplicated products.
 * 
 * Author: Carmine Colicino, Luigi Di Martino
 * Version: 1.0
 * 
 * 2014 - Copyright by Team 6 - University of Salerno
*/
package it.unisa.udocs.facade;

import java.util.ArrayList;

import it.unisa.udocs.data.*;

public interface IFacadeProdotti extends IFacade {
	
	ArrayList<Prodotto> ricercaProdotti(ArrayList<String> campiCompilati);
	
	ArrayList<Prodotto> ricercaProdottiAdmin(ArrayList<String> campiCompilati);
	
	ArrayList<Prodotto> listaProdottiPersonali(int id_account);
	
	ArrayList<Prodotto> getProdottoByIdProdotto(int id_prodotto);
	
	int inserisciProdotto(Prodotto prod);
	
	void inserisciArticoloLibro(ArticoloLibro artLib);
	
	void inserisciArticoloRivista(ArticoloRivista artRiv);
	
	void inserisciMonografia(Monografia monograf);
	
	void inserisciProceeding(Proceeding proceed);
	
	void inserisciBrevetto(Brevetto brev);
	
	void inserisciCuratela(Curatela curat);
	
	void inserisciAltroProdotto(AltroProdotto altro);
	
	void eliminaProdotto(Prodotto prod);
	
	void modificaProdotto(Prodotto prod, String oldTipologia);
	
	void inserisciNotifica(Notifica notif);
	
	boolean notificaAttiva(int id_prodotto, int id_account);
	
	ArrayList<Prodotto> getProdottiDaRiconoscere(int id_account);
	
	void confermaRiconoscimento(int id_account, int id_prodotto);
	
	int segnalaNotifica(int id_account);
	
	int findDuplicate(Prodotto prod);

}
